/*
实践练习2：数组与结构体编程（成绩统计与分析）
1．学生成绩统计（一维数组）
从键盘输入一个班（全班最多不超过30人）学生某门课的成绩，当输入成绩为负值时，输入结束，分别实现下列功能：
（1）统计不及格人数并打印不及格学生名单；
（2）统计成绩在全班平均分及平均分之上的学生人数，并打印这些学生的名单；
（3）以直方图方式统计各分数段的学生人数及所占的百分比。形式如下：
分数段  学生人数	  图形
<60   3（10%）	***
60-69  8（…）	********
70-79	 7（…）	*******
80-89	 8（…）	********
>=90	 4（…）	****
练习3：函数编程 （函数调用与参数传递）
1.将实践练习2中的第1题利用函数的思想进行修改。要求函数参数中包含数组名。
*/
#include<stdio.h>
#include<stdlib.h>

int main()
{
	int num, i, j=0, k=0, l=0, m=0, n=0, o=0;
    double	score[30];//30个人成绩
	char name[8][30];
	double ave(double score[], int num);//平均成绩函数
	double a;//平均分

	printf("请输入人数num:");
	scanf("%d", &num);

	for(i=0;i<num;i++)
	{
		printf("请输入第%d个学生的姓名:", i+1);
		scanf("%s", name[i]);
		printf("请输入第%d个学生的成绩:", i+1);
		scanf("%lf", &score[i]);
	}

	printf("不及格学生为:");
	for(i=0;i<num;i++)
	{
		if(score[i] < 60)
		{
			printf("%s", name[i]);
			j++;
		}
	}
	printf("\n不及格学生人数为:%d", j);

	a = ave(score, num);
	printf("\n平均分为:ave=%lf\n", a);

	printf("分数在平均分以下的学生为:");
	for(i=0;i<num;i++)
	{
		if(score[i] <  a)
		{
			printf("%s", name[i]);
			k++;
		}
	}
	printf("\n分数在平均分以下的学生人数为:%d\n", k);

	for(i=0;i<num;i++)
	{
		if(score[i] >= 90){l++;}
		if(score[i]<90 && score[i]>=80){m++;}
		if(score[i]<80 && score[i]>=70){n++;}
		if(score[i]<70 && score[i]>=60){o++;}
	}

	printf("分数段         学生人数               图形\n");
	printf("<60            %d(%lf%%)          ", j, (double)j/num*100);
	for(i=0;i<j;i++)printf("*");
	printf("\n60-69          %d(%lf%%)          ", l, (double)l/num*100);
	for(i=0;i<l;i++)printf("*");
	printf("\n70-79          %d(%lf%%)          ", m, (double)m/num*100);
	for(i=0;i<m;i++)printf("*");
	printf("\n80-89          %d(%lf%%)          ", n, (double)n/num*100);
	for(i=0;i<n;i++)printf("*");
	printf("\n>=90           %d(%lf%%)          ", o, (double)o/num*100);
	for(i=0;i<o;i++)printf("*");
	printf("\n");

	system("pause");
}

double ave(double score[], int num)//数组中括号内为空
{
	int i, sum=0, ave;
	for(i=0;i<num;i++)
	{
		sum += score[i];
	}
	ave = sum/num;
	return ave;
}
/*
编辑编译连接，执行结果如下：
请输入人数num:5
请输入第1个学生的姓名:a
请输入第1个学生的成绩:50
请输入第2个学生的姓名:b
请输入第2个学生的成绩:60
请输入第3个学生的姓名:c
请输入第3个学生的成绩:77
请输入第4个学生的姓名:d
请输入第4个学生的成绩:88
请输入第5个学生的姓名:e
请输入第5个学生的成绩:100
不及格学生为:a
不及格学生人数为:1
平均分为:ave=75.000000
分数在平均分以下的学生为:ab
分数在平均分以下的学生人数为:2
分数段         学生人数               图形
<60            1(20.000000%)          *
60-69          1(20.000000%)          *
70-79          1(20.000000%)          *
80-89          1(20.000000%)          *
>=90           1(20.000000%)          *
请按任意键继续. . .
*/